Di dunia Rust, alat CLI yang andal bukan hanya satu skrip saja; melainkan sebuah rancangan yang terstruktur dengan cermat Rancangan Proyek. Untuk membangun alat seperti grep, kita membagi pekerjaan antara Krate Biner dan Krate Perpustakaan.
1. Metafora Mesin Kopi
Bayangkan mesin kopi kelas atas. Bagian lib.rs mengandung mekanisme internal untuk memanaskan air dan menggiling biji kopi—logika "mesin"-nya. Bagian main.rs adalah tombol eksternal yang ditekan pengguna—"antarmuka." Dengan menjaga keduanya terpisah, teknisi dapat menguji pemanas (perpustakaan) tanpa harus menekan tombol fisik (biner) setiap kali.
2. Mendirikan Mesin
Kita mulai dengan $ cargo new minigrep. Meskipun ini menciptakan main.rs, kita harus secara manual menambahkan src/lib.rs. Pembagian arsitektur ini memastikan logika pencarian inti kita tetap terpisah dari pemrosesan CLI, memungkinkan pengujian yang lebih mudah dan modularitas.
3. Modularitas yang Dapat Diuji
Dengan memindahkan logika ke lib.rs, kita menggunakan kerangka pengujian Rust untuk memanggil fungsi perpustakaan dalam lingkungan terkontrol. Kita gunakan use minigrep; di biner kita untuk mengimpor mesin sambil menjaga logika pemrosesan baris perintah tetap terisolasi.